const baseUrl = 'http://192.168.31.28:8000'; // 后端接口前缀

function request(options) {
    const { url, method = 'GET', data = {}, success, fail, complete } = options;

    wx.showLoading({ title: '加载中...' });

    wx.request({
        url: baseUrl + url,
        method,
        data,
        header: {
            'Content-Type': 'application/json',
            'Authorization': 'Bearer '+wx.getStorageSync('token') // 自动携带token
        },
        success(res) {
            console.info(res)
            if (res.statusCode === 200) {
                if(res.data.message==='未登录或登录身份过期，请重新登录！'){
                    console.log("未登录或登录身份过期")
                    noLoginGoLogin();
                }else{
                    success && success(res.data);
                }
            }else if(res.statusCode === 401) {
                noLoginGoLogin();
            } else {
                fail && fail('服务器异常');
                wx.showToast({ title: '请求失败', icon: 'none' });
            }
        },
        fail(err) {
            fail && fail('网络错误');
            wx.showToast({ title: '网络异常', icon: 'none' });
        },
        complete() {
            wx.hideLoading();
            complete && complete();
        }
    });
}

/**
 * 没有登录需要跳到登录页面
 */
function noLoginGoLogin(){
    //提示并跳到登录页进行登录
    wx.clearStorageSync();//清空所有的缓存
    wx.showToast({
        title: '当前登录身份过期或已失效，即将进行跳转到登录页面...',
        icon: 'none', // 可以根据需要设置为 'success'、'loading' 等
        duration: 2000 // 提示框显示时间为 1.5 秒
    });
    // 使用 setTimeout 函数延迟 1.5 秒后跳转页面
    setTimeout(() => {
        wx.switchTab({
            url: '/pages/mine/mine'
        });
    }, 2500);
}

// 支持Promise风格
function requestPromise(options) {
    return new Promise((resolve, reject) => {
        request({
            ...options,
            success: resolve,
            fail: reject
        });
    });
}

/**
 * 操作提示
 * @param options
 */
function showTip(options = {}){
    const { title='小程序开小差了，请重试！', duration = 1000 } = options;
    wx.showToast({
        title: title,
        icon: 'none',
        duration: duration, // 1 秒（单位：毫秒）
    });
}

/**
 * 获取用户信息
 * @returns {any}
 */
function getCurrentUserInfo(options){
    const userInfo = wx.getStorageSync("userInfo");
    if(userInfo){
        return userInfo;
    }else{
        noLoginGoLogin();
    }
}

module.exports = {
    request,
    requestPromise,
    showTip,
    getCurrentUserInfo
};